package com.sanploy.manage.mapper;


import com.sanploy.common.domain.Admin;
import com.sanploy.common.domain.dto.AdminDto;
import com.sanploy.common.domain.dto.Pages;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 管理员 数据库操作接口
 * Created by zhu yingzhi on 2017/10/16.
 * @author yingzhi zhu
 */
@Mapper
public interface AdminMapper {

    /**
     * 通过名字 查找管理员
     * @param username 管理员名
     * @return 管理员信息
     */
    @Select("SELECT * FROM admin WHERE username=#{username}")
    Admin findByName(@Param("username") String username);

    /**
     * 通过id 查找管理员
     * @param id 管理员id
     * @return 管理员信息
     */
    @Select("SELECT * FROM admin WHERE id=#{id}")
    Admin findById(@Param("id") Long id);

    /**
     * 查找管理员数量
     * @return 管理员数量
     */
    @Select("SELECT count(*) FROM admin")
    int findAdminCount();

    /**
     * 分页查找管理员
     * @param pages 分页信息
     * @return 管理员列表
     */
    @Select("SELECT * FROM admin ORDER BY role DESC Limit #{start},#{pageSize}")
    List<Admin> findAdmin(Pages pages);

    /**
     * 添加管理员
     * @param admin 管理员信息
     * @return 影响行数
     */
    @Insert("INSERT INTO admin " +
            "(username,password,role,add_time,nick_name)" +
            "VALUES " +
            "(#{username},#{password},#{role},#{add_time},#{nick_name})")
    int addAdmin(AdminDto admin);

    /**
     * 编辑管理员
     * @param admin 管理员信息
     * @return 影响行数
     */
    @Update("UPDATE admin SET username=#{username},password=#{password},role=#{role},nick_name=#{nick_name}" +
            " WHERE id=#{id}")
    int editAdmin(AdminDto admin);

    /**
     * 删除管理员
     * @param id 管理员id
     * @return 影响行数
     */
    @Delete("DELETE FROM admin WHERE id = #{id}")
    int deleteAdmin(@Param("id") Long id);
}
